如何判断远端主机UDP端口是否开启 |
您所在的位置:网站首页 › cmd 查询端口号是否开启 › 如何判断远端主机UDP端口是否开启 |
一、服务端TCP监听端口
如果是tcp作为监听端口,很多人里面可以想到相应的方法,由于tcp三次握手协议,我们可以直接写一个客户端程序即可判断tcp端口是否监听。我们汇总几种方法: 1.tcp socket客户端编程 直接调用connect接口(unix),建链远端地址和端口,建链成功:在监听port;建链拒绝:表示未在监听 2.telnet命令 client: [root@Node_B build]# telnet 10.228.113.185 8000 Trying 10.228.113.185... Connected to 10.228.113.185 (10.228.113.185). Escape character is '^]'. ss Hello,you are connected!server: [root@localhost test]# ./tcp_server ======waiting for client's request====== recv msg from client: ss如果拒绝: [root@Node_B build]# telnet 10.228.113.185 8001 Trying 10.228.113.185... telnet: connect to address 10.228.113.185: Connection refused telnet: Unable to connect to remote host: Connection refused3.nc命令 client: [root@Node_B build]# nc -vz 10.228.113.185 8000 Connection to 10.228.113.185 8000 port [tcp/irdmi] succeeded!
相对于TCP,UDP无法通过三次握手来判断端口是否启用,connect 接口链接UDP套接字和远端主机UDP绑定的地址和端口,无论远端是否绑定,connect均可以链接成功,同时 telnet也仅适用于TCP。 我们只能通过nc命令来判断。 我们做一个实验: 1)在服务端我们启用一个10.228.113.185,端口8888的udp端口 client: [root@Node_B build]# nc -uvz 10.228.113.185 8888 Connection to 10.228.113.185 8888 port [udp/ddi-udp-1] succeeded!server: [root@localhost test]# ./udp_server client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data!
2)我们用nc探测没有开启服务的端口 client: [root@Node_B build]# nc -uvz 10.228.113.185 8887
3)nc探测一个链路不通的端口 [root@Node_B build]# ping 10.228.113.186 PING 10.228.113.186 (10.228.113.186) 56(84) bytes of data. From 10.228.113.90 icmp_seq=2 Destination Host Unreachable From 10.228.113.90 icmp_seq=3 Destination Host Unreachable From 10.228.113.90 icmp_seq=4 Destination Host Unreachable From 10.228.113.90 icmp_seq=6 Destination Host Unreachable From 10.228.113.90 icmp_seq=7 Destination Host Unreachable From 10.228.113.90 icmp_seq=8 Destination Host Unreachable ^C --- 10.228.113.186 ping statistics --- 9 packets transmitted, 0 received, +6 errors, 100% packet loss, time 8946ms pipe 3 [root@Node_B build]# nc -uvz 10.228.113.186 8888 Connection to 10.228.113.186 8888 port [udp/ddi-udp-1] succeeded!从实验来看,对端链路不通,但是nc工具任然认为8888端口开启,实际上我们无法确认对端是否开启,这就是这个nc工具的小bug,上面我们也说到如果没有收到目标主机的回复,netcat认为远端监听的端口开启,由于链路不通,这里也分两种情况: 1.如果nc探测的地址是在同一个子网下面,但是远端地址和本机不通,通过抓包发现,实际都没有发出来任何一个探测包,由于底层失败对端是同一个子网,但是学不到mac,所以没有发出任何报文 2.如果nc探测的地址不是在同一个子网下面,通过抓包发现,可以发出五个探测报文,由于不在一个网段,直接走默认网关,所以可以发出来探测报文。 1、远程拷贝文件 从server1拷贝文件到server2上。需要先在server2上,,用nc激活监听, server2上运行: nc -l 1234 > text.txt server1上运行: nc 192.168.10.11 1234 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |